﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Servicios;
using Modelo;

namespace AppFerreteria.Producto
{
    public partial class frmBuscarProducto : Form
    {
        private static String CODIGO = "CODIGO";
        private static String NOMBRE = "NOMBRE";
        private String Busqueda = "CODIGO";
        private frmVentaCliente frmVentaCliente;

        public frmBuscarProducto()
        {
            InitializeComponent();
        }

        /// <summary>
        /// Cuando es llamado desde la Venta para buscar un producto y completar 
        /// en la venta
        /// </summary>
        /// <param name="ventaCliente"></param>
        public frmBuscarProducto(frmVentaCliente ventaCliente)
        {
            frmVentaCliente = ventaCliente;
            InitializeComponent();
        }

        private void frmBuscarProducto_Load(object sender, EventArgs e)
        {
            listProductos.DataSource = null;
            listProductos.DataSource = new ArticuloService().GetArticulos();

            List<String> tipoDeBusqueda = new List<String>();
            tipoDeBusqueda.Add(CODIGO);
            tipoDeBusqueda.Add(NOMBRE);

            cmbBusqueda.DataSource = tipoDeBusqueda;
        }

        /// <summary>
        /// Resetea el Text y carga la grilla
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void btnReset_Click(object sender, EventArgs e)
        {
            txtBusqueda.Text = "";
            listProductos.DataSource = new ArticuloService().GetArticulos();
        }

        /// <summary>
        /// Busca por Codigo o Nombre según el combo box
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void txtBusqueda_TextChanged(object sender, EventArgs e)
        {
            switch (Busqueda)
            {
                case "CODIGO":
                    List<Articulo> articulosCod = new ArticuloService().GetArticulosByCodigo(txtBusqueda.Text);
                    listProductos.DataSource = articulosCod;
                    break;
                case "NOMBRE":
                    List<Articulo> articulosNom = new ArticuloService().GetArticulosByNombre(txtBusqueda.Text);
                    listProductos.DataSource = articulosNom;
                    break;
                default:
                    break;
            }

            
        }

        /// <summary>
        /// Selecciona el tipo de busqueda y borra el text
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void cmbBusqueda_SelectedIndexChanged(object sender, EventArgs e)
        {
            Busqueda = (cmbBusqueda.SelectedItem).ToString();
            txtBusqueda.Text = "";
        }

        /// <summary>
        /// Evento doble click para completar el codigo en una venta
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void listProductos_CellDoubleClick(object sender, DataGridViewCellEventArgs e)
        {
            if (frmVentaCliente != null)
            {
                int rowIndex = e.RowIndex;
                DataGridViewRow row = listProductos.Rows[rowIndex];

                Articulo articulo = new Articulo();

                articulo.Codigo = (string)row.Cells[1].Value;
                articulo.Nombre = (string)row.Cells[2].Value;
                articulo.PrecioVenta = (Int32)row.Cells[5].Value;

                frmVentaCliente.AgregarArticulo(articulo);
                frmVentaCliente.Show();
                Close();
            }
        }

        
    }
}
